/* Hello World Example

   This example code is in the Public Domain (or CC0 licensed, at your option.)

   Unless required by applicable law or agreed to in writing, this
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
   CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
// #include "esp_log.h"


// #define CHIP_NAME "ESP32"

//创建task任务
void myTask(void *pvParam)
{
    while(1)
    {
        printf("hello world! In the task\n");
        vTaskDelay(1000/portTICK_PERIOD_MS);
    }

//第二种删除task方式
        // vTaskDelete(NULL);
        //xTaskCreate(myTask,"myTask1",1024,NULL,1,NULL);//这个函数需要改成这样

}


void app_main(void)
{     
    TaskHandle_t myHandle = NULL;//Task句柄，数据类型
    xTaskCreate(myTask,"myTask1",1024,NULL,1,&myHandle);//使用这个Task

    // vTaskDelay(1000/portTICK_PERIOD_MS);//延时1s
     vTaskDelay(8000/portTICK_PERIOD_MS);//延时8s，但是task是独立实时的，就会输出打印8次


//第一种删除task的方式  


    if(myHandle != NULL) //如果句柄不为空，就会删除这个任务
    {
        vTaskDelete(myHandle);
    }
    // printf("Hello world!\n");

    // /* Print chip information */
    // esp_chip_info_t chip_info;
    // esp_chip_info(&chip_info);
    // printf("This is %s chip with %d CPU core(s), WiFi%s%s, ",
    //         CHIP_NAME,
    //         chip_info.cores,
    //         (chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
    //         (chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");

    // printf("silicon revision %d, ", chip_info.revision);

    // printf("%dMB %s flash\n", spi_flash_get_chip_size() / (1024 * 1024),
    //         (chip_info.features & CHIP_FEATURE_EMB_FLASH) ? "embedded" : "external");

    // printf("Minimum free heap size: %d bytes\n", esp_get_minimum_free_heap_size());

    // while(1){
    //     printf("system run ...\n");
    //     vTaskDelay(1000 / portTICK_PERIOD_MS);
    // }
}
